package com.xxxy.ljh.myapplication.activity;

import android.content.Intent;
import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.xxxy.ljh.myapplication.Adapter.PendingClubAdapter;
import com.xxxy.ljh.myapplication.Dao.ClubDao;
import com.xxxy.ljh.myapplication.DaoImpl.ClubDaoImpl;
import com.xxxy.ljh.myapplication.R;
import com.xxxy.ljh.myapplication.model.Club;

import java.util.List;

/**
 * 社团审核活动页面
 * <p>
 * 该页面用于展示所有待审核的社团列表，并允许管理员点击进入审核详情页进行操作。
 * 当审核操作完成时，会自动刷新当前列表以反映最新的状态。
 */
public class ClubAuditActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private PendingClubAdapter adapter;
    private ClubDao clubDao;
    private List<Club> pendingClubs;

    private static final int AUDIT_REQUEST_CODE = 1001;

    /**
     * Activity创建回调方法
     *
     * @param savedInstanceState 保存的实例状态Bundle对象
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_club_audit);

        initViews();
        clubDao = new ClubDaoImpl(this);
        loadPendingClubs();
    }

    /**
     * 初始化视图组件
     * 设置RecyclerView并配置其布局管理器
     */
    private void initViews() {
        recyclerView = findViewById(R.id.recyclerViewPendingClubs);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
    }

    /**
     * 加载待审核社团数据并设置适配器
     * 获取数据库中所有待审核的社团信息，并绑定到RecyclerView上
     */
    private void loadPendingClubs() {
        pendingClubs = clubDao.getPendingClubs();
        adapter = new PendingClubAdapter(pendingClubs, club -> {
            // 点击社团项进入审核详情页
            Intent intent = new Intent(ClubAuditActivity.this, ClubAuditDetailActivity.class);
            intent.putExtra("club_id", club.getId());
            startActivityForResult(intent, AUDIT_REQUEST_CODE);
        });
        recyclerView.setAdapter(adapter);
    }

    /**
     * 处理从其他Activity返回的结果
     *
     * @param requestCode 请求码，标识请求来源
     * @param resultCode  结果码，表示操作结果
     * @param data        返回的数据Intent对象
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == AUDIT_REQUEST_CODE && resultCode == RESULT_OK) {
            // 审核完成后刷新列表
            refreshData();
        }
    }

    /**
     * 刷新待审核社团列表数据
     * 清空旧数据并重新加载最新数据后通知适配器更新界面
     */
    private void refreshData() {
        pendingClubs.clear();
        pendingClubs.addAll(clubDao.getPendingClubs());
        adapter.notifyDataSetChanged();
    }
}
